/**JavaScript 中的值可以分为以下两类：
 *(1) 可以被强制类型转换为 false 的值
 *(2) 其他（被强制类型转换为 true 的值）
 * 以下这些是假值：
 * undefined
 * null
 * false
 * +0、-0 和 NaN
 * ""
 * 假值的布尔强制类型转换结果为 false
 */
const falsy = Boolean(undefined||null||false||+0||-0||NaN||"");
console.log("js中的假值",falsy);

// ~x  大致等同于 -(x+1) 。很奇怪，但相对更容易说明问题：
// “~42;    // -(42+1) ==> -43”
console.log(~42);
/**
 * 在 -(x+1) 中唯一能够得到 0 （或者严格说是 -0 ）的 x 值是 -1 。
 * 也就是说如果 x 为 -1 时，~ 和一些数字值在一起会返回假值 0 ，其他情况则返回真值。
 */
console.log(~-1);

const str = "Hello World"

function exist(str,target){
    // “如果 indexOf(..) 返回 -1 ，~ 将其转换为假值 0 ，其他情况一律转换为真值。
    const condition = ~str.indexOf(target)
    console.log(target,"使用~处理过之后的结果是",condition);
    if(condition){
        console.log("存在",target)
    }else{
        console.log("未找到",target)
    }
}
exist(str,"lo")
exist(str,"ello")
exist(str,"He")
exist(str,"wt")

